
using System;
using System.Runtime.InteropServices;

namespace LightScribe
{	
	public delegate bool AbortLabelDelegate();
	public delegate void ReportPrepareProgressDelegate(int current, int final); 
	public delegate void ReportLabelProgressDelegate(int current, int final);
	public delegate void ReportFinishedDelegate(Error status);
	public delegate bool ReportLabelTimeEstimateDelegate(int time);
	
	/**
	* C-style callback structure.  Fill the structure in with function pointers to your
	* own callbacks
	*/
	[StructLayout(LayoutKind.Sequential)]
	public struct PrintCallbacks
	{
		[MarshalAs(UnmanagedType.FunctionPtr)]
		public AbortLabelDelegate AbortLabel;
		[MarshalAs(UnmanagedType.FunctionPtr)]
		public ReportPrepareProgressDelegate ReportPrepareProgress;
		[MarshalAs(UnmanagedType.FunctionPtr)]
		public ReportLabelProgressDelegate ReportLabelProgress;
		[MarshalAs(UnmanagedType.FunctionPtr)]
		public ReportFinishedDelegate ReportFinished;
		[MarshalAs(UnmanagedType.FunctionPtr)]
		public ReportLabelTimeEstimateDelegate ReportLabelTimeEstimate;
	}
}
